


//跳转至自定义模板面面
function toCustomTemplet(){
	window.location.href='toCustomTemplet.action';
}

$(function(){
	
	//加载模板类别
	$.ajax({
		url:"../customTempletController/selectTempletClassify.action",
		data:'',
		dataType:"JSON",
		type:"post",
		success:function(data){
			assembleTemplet(data);
		},
		error:function(e){
			alert('加载模板类别信息出错');
		}
	})
	
	// 加载表格
	searchTable = $("#searchTable").DataTable(dataTableConfig);
});

//查询
function searchPageList(){
	searchTable.ajax.reload();
}
//清除查询条件
function cleanSelect(){
	$("#tableNameStr").val('');
}

//组合模板
function assembleTemplet(json){
	$("#templetClassify").empty();
	var dataSelect='';
	if(0 == json.length){
		dataSelect+='<option value="'+'内置模板'+'" selected="selected">'+'内置模板'+'</option>';
		$("#templetClassify").append(dataSelect);
		var lastSelected = $('#templetClassify option:selected').val();
		 $("#templetClassify").multiselect('select', lastSelected);
		 $('#templetClassify').multiselect();
		//$('#templetClassify').multiselect( {disableIfEmpty: true,disabledText: '无可选项'});
	}else{
		for(var i=0;i<json.length;i++){
			dataSelect+='<option value="'+'内置模板'+'" selected="selected">'+'内置模板'+'</option>'+'<option value="'+json[i]+'">'+json[i]+'</option>';
			$("#templetClassify").append(dataSelect);
			var lastSelected = $('#templetClassify option:selected').val();
			$("#templetClassify").multiselect('select', lastSelected);
			$('#templetClassify').multiselect();
		}
	}
	


}

//后面构建btn 代码
var btnModel = '    \
	{{#each func}}\
    <button type="button" class="btn btn-{{this.type}} btn-sm" onclick="{{this.fn}}">{{this.name}}</button>\
    {{/each}}';
var template = Handlebars.compile(btnModel);
var searchTable;
var contentBtn;
function btnFun(c){
	contentBtn = "";
	if(contentBtn){
		return contentBtn;
	}else{
		var btnArray = new Array();
			btnArray.push({"name": "源码生成", "fn": "createCode(\'" + c.tableName + "\',\'"+c.uceDataId+ "\',\'"+c.databaseName+"\')", "type": "primary"});
		contentBtn = {
			func:btnArray
		}
		return contentBtn;
	}
}

// 表格配置信息
var dataTableConfig = {
	"ordering": false,// 排序
	"serverSide": true,// 开启服务器模式
	"scrollX": true,// 横向滚动
	ajax: {
        "type": "POST",
        "url":'tableList.action',//请求路径
        "contentType": 'application/x-www-form-urlencoded; charset=UTF-8',
        "dataType":'json',
        "data":function(d){// 查询参数
        	d.tableName = $('#tableNameStr').val();
        	return d;
        }
	},
	columns: [// 对应列
        {"data": "tableName"},
        {"data": "createState"},
        {"data": "createUser"},
        {"data": "createDate"},
        {"data": null}
    ],
    "columnDefs": [
		{// 所有列默认值
			"targets": "_all",
			"defaultContent": ''
		},
       {
		// 最后一列添加按钮
        targets: -1,
        render: function (a, b, c, d) {
        	var context = btnFun(c);
            var html = template(context);
            return html;
        }
    }]
	,"dom": 'rt<"bottom"ip><"clear">' //生成样式
};

//展示源码生成页面
//tableName:表名称，uceDataId:数据源ID
function createCode(tableName,uceDataId,databaseName){
	//模态框表名称赋值
	$("#tableName").val(tableName);
	//初始化参数
	$("#packagePath").val('cn.chinaunicom.sdsi.frm.sys');
	$("#className").val("");
	$("#createUser").val("");
	$("#jspPath").val("");
	$("input[type=radio][name=saveType][value='1']").prop("checked",'checked');
	$("#savePath").hide();
	//清空模板类型
	$("#templetClassify").multiselect('clearSelection');
	$("#templetClassify").multiselect('refresh');
	 $("#templetClassify").multiselect('select', '内置模板');

	//加载表中字段
	$.ajax({
		url:"tableColumnList.action",
		data:{"tableName":tableName,"uceDataId":uceDataId,"databaseName":databaseName},
		dataType:"JSON",
		type:"post",
		success:function(data){
			//组合业务表配制信息
			setTableMessage(data.tableMessage);
			//组合业务表字段
			assembleTableColumn(data.tableList);
		},
		error:function(e){
			alert('加载数据源信息出错');
		}
	})
	
	$("#uceDataId").val(uceDataId);
	$("#myModal").modal('show');
}

function setTableMessage(tableMessage){
	if(null != tableMessage){
		$("#packagePath").val(tableMessage.packagePath);
		$("#className").val(tableMessage.className);
		$("#createUser").val(tableMessage.createUser);
		$("#jspPath").val(tableMessage.jspPath);
		
		if(null != tableMessage.templetClassify && 'null' != tableMessage.templetClassify){
			var arr=tableMessage.templetClassify.split(',');
			$("#templetClassify").multiselect('select',arr).multiselect("refresh");
		}
		//本地生成
		if('0' == tableMessage.saveType){
			$("input[type=radio][name=saveType][value="+tableMessage.saveType+"]").prop("checked",'checked');
			$("#savePath").show();
		}else{
			$("input[type=radio][name=saveType][value="+tableMessage.saveType+"]").prop("checked",'checked');
			$("#savePath").hide();
		}
		$("#savePath").val(tableMessage.savePath);
	}else{
		//设置默认的导出包名
		$("#packagePath").val('cn.chinaunicom.sdsi.frm.sys');
//		$("#templetClassify").multiselect('select',[-100]);
	}
}
//组合业务表字段
function assembleTableColumn(json){
	
	$("#columnList").empty();
	var option='';
	
	for(var i=0;i<json.length;i++){
		
		var isKey='';
		var isList='';
		var isSelect='';
		if(json[i].isKey =='1'){
			isKey='checked="checked"';
		}
		if(json[i].isList =='1'){
			isList='checked="checked"';
		}
		if(json[i].isSelect =='1'){
			isSelect='checked="checked"';
		}
		var displayComment = json[i].displayComment=='null'?'':json[i].displayComment;
		
		option+="<tr>"+
	        		"<td style='text-align:left'>"+json[i].columnName+"</td>"+
	        		"<td>"+json[i].dbJdbcType.toUpperCase()+"</td>"+
	        		"<td><input type='checkbox' name='primaryKey' value='"+json[i].columnName+"' "+isKey+"></td>"+
	        		"<td><input type='text' maxlength='50' value='"+json[i].columnComment+"' class='form-control input-sm'</td>"+
	        		"<td><input type='text' maxlength='50' value='"+displayComment+"' class='form-control input-sm'</td>"+
	        		"<td><input type='checkbox' name='listKey' value='"+json[i].columnName+"' "+isList+"></td>"+
	        		"<td><input type='checkbox' name='selectKey' value='"+json[i].columnName+"' "+isSelect+"></td>"+
        		"</tr>";
	}
	
	$("#columnList").append(option);
}

//显示本地生成路径
function showText(value_){
	if('1' == value_){
		$("#savePath").hide();
	}else if('0' == value_){
		$("#savePath").show();
	}
}

//根据模板生成源码
function createCodeSource(){
	
	var className = $("#className").val();
	if(null == className || '' == className){
		alert('类名不可为空');
		return;
	}
	
	var packagePath = $("#packagePath").val();
	if(null == packagePath || '' == packagePath){
		alert('包名不可为空');
		return;
	}
	
	var jspPath = $("#jspPath").val();
	if(null == jspPath || '' == jspPath){
		alert('JSP路径不可为空');
		return;
	}
	
	var createUser = $("#createUser").val();
	if(null == createUser || '' == createUser){
		alert('作者不可为空');
		return;
	}
	
	var flag='';
	var saveType = $("input[type=radio][name=saveType]:checked").val();
	//0代表本地生成
	if('0' == saveType){
		//验证服务器是否是本机
		$.ajax({
			url:"validateServer.action",
			data:{},
			dataType:"JSON",
			async:false,
			type:"post",
			success:function(data){
				if(true == data){
					flag='1';
				}else{
					flag='-1';
				}
			},
			error:function(e){
				alert('验证服务器是否是本机出错');
				flag='-1';
				return;
			}
		})
	}

	
	//生成器部署地址为本机
	if('1' == flag){
		var savePath = $("#savePath").val();
		if(null == savePath || '' == savePath){
			alert('本地路径不可为空');
			return;
		}
	}else if('-1' == flag){
		alert('生成器部署地址不是本机，不能使用本地导出。');
		return;
	}
	
	var primaryKey = $("input[name='primaryKey']:checked");
	if(primaryKey.length == 0){
		alert("主键未设置");
		return;
	}
	var isList = $("input[name='listKey']:checked");
	if(isList.length == 0){
		alert("台帐显示未设置");
		return;
	}
	var isSelect = $("input[name='selectKey']:checked");
	if(isSelect.length == 0){
		alert("查询条件未设置");
		return;
	}
	
	var columnName='';
	//跳出标志位
	var booleanFlag=false;
	//遍历所有TR
	$("#columnList").find("tr").each(function(){
		
        var tdArr = $(this).children();
        var column = tdArr.eq(0).text();
        var columnJdbcType = tdArr.eq(1).text();
        var isKey = tdArr.eq(2).find("input[type=checkbox]:checked").val();
        var columnComment = tdArr.eq(3).find("input").val();
        var displayComment = tdArr.eq(4).find("input").val();
        var isList = tdArr.eq(5).find("input[type=checkbox]:checked").val();
        if(null != isList && '' != isList){
        	if(null == displayComment || '' == displayComment){
        		alert('台帐显示字段需录入显示名称！');
        		booleanFlag=true;
        		return false;
        	}
        }
        var isSelect = tdArr.eq(6).find("input[type=checkbox]:checked").val();
        if(null != isSelect && '' != isSelect){
        	if(null == displayComment || '' == displayComment){
        		alert('查询条件字段需录入显示名称！');
        		booleanFlag=true;
        		return false;
        	}
        }
        //以99做为分隔符
        columnName+=column+"-"+isKey+"-"+isList+"-"+columnComment+"-"+displayComment+"-"+isSelect+"-"+columnJdbcType+"99";

	});
	
	if(booleanFlag == true){
		return;
	}
	
	//提交分成两个的主要原因是ResponseBody不支持文件下载
	//本地生成
	if("0" == saveType){
		$.ajax({
			url:"saveDataTableAndColumn.action",
			data:$('#dataTableForm').serialize()+"&columnName="+columnName,
			dataType:"JSON",
			type:"post",
			success:function(data){
				if("success" == data){
					alert('源码生成成功');
				}
			},
			error:function(e){
				alert('源码生成出错');
			}
		})
	}else{
		
		var colm=encodeURI(columnName);
			colm=encodeURI(colm);
		//打包下载
		window.location.href='saveDataTableAndColumnDownload.action?'+$('#dataTableForm').serialize()+"&columnName="+colm;
	}
}
